package easy;

/**
 *在一个 8 x 8 的棋盘上，有一个白色车（rook）。也可能有空方块，白色的象（bishop）和黑色的卒（pawn）。它们分别以字符 “R”，“.”，“B” 和 “p” 给出。大写字符表示白棋，小写字符表示黑棋。
 *
 * 车按国际象棋中的规则移动：它选择四个基本方向中的一个（北，东，西和南），然后朝那个方向移动，直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另外，车不能与其他友方（白色）象进入同一个方格。
 *
 * 返回车能够在一次移动中捕获到的卒的数量。
 *  
 *
 * 示例 1：
 *
 *
 *
 * 输入：[[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","R",".",".",".","p"],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]]
 * 输出：3
 * 解释：
 * 在本例中，车能够捕获所有的卒。
 * 示例 2：
 *
 *
 *
 * 输入：[[".",".",".",".",".",".",".","."],[".","p","p","p","p","p",".","."],[".","p","p","B","p","p",".","."],[".","p","B","R","B","p",".","."],[".","p","p","B","p","p",".","."],[".","p","p","p","p","p",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]]
 * 输出：0
 * 解释：
 * 象阻止了车捕获任何卒。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/available-captures-for-rook
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class _999_车的可用捕获量 {

    public static int numRookCaptures(char[][] board) {
        int x = 0;
        int y = 0;
        boolean hasR = false;
        for(int i=0;i<8;i++){
            for(int j = 0;j<8;j++){
                if(board[i][j]=='R'){
                    x=i;
                    y=j;
                    hasR=true;
                    System.out.println(i+"  "+j);
                    break;
                }
            }
            if (hasR) break;
        }
        int xx = x-1;
        int yy = y-1;
        int xxx = x+1;
        int yyy = y+1;
        int count = 0;
        while (xx>=0){
            if(board[xx][y]=='p'){
                count++;
                break;
            } else if(board[xx][y]=='B'){

                break;
            }
            xx--;
        }
        while (xxx<8){
            if(board[xxx][y]=='p'){
                count++;
                break;
            }
            else if(board[xxx][y]=='B'){

                break;
            }
            xxx++;
        }
        while (yy>=0){
            if(board[x][yy]=='p'){
                count++;
                break;
            }
            else if(board[x][yy]=='B'){

                break;
            }
            yy--;
        }
        while (yyy<8){
            if(board[x][yyy]=='p'){
                count++;
                break;
            }
            else if(board[x][yyy]=='B'){

                break;
            }
            yyy++;
        }

        return count;
    }

    public static void main(String[] args) {
        char [][] a = {{'.','.','.','.','.','.','.','.'},{'.','.','.','p','.','.','.','.'},{'.','.','.','p','.','.','.','.'},{'p','p','.','R','.','p','B','.'},{'.','.','.','.','.','.','.','.'},{'.','.','.','B','.','.','.','.'},{'.','.','.','p','.','.','.','.'},{'.','.','.','.','.','.','.','.'}};
        System.out.println(numRookCaptures(a));

    }
}
